package org.myLazyClock.calendarApi; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by jeremy on 09/12/14. */ public class SmartEdtGroupData { private int groupId; private Map<String, HashMap<Integer, String>> data; public SmartEdtGroupData(int groupId){ this.groupId = groupId; this.data = new HashMap<String, HashMap<Integer, String>>(); } public void reloadData() throws IOException { Map<String, String> urlParameters = new HashMap<String, String>(); urlParameters.put("getGroup", String.valueOf(this.groupId)); urlParameters.put("bdd0", ""); JsonElement root = JsonConverter.getJson(urlParameters).getAsJsonArray().get(0); JsonArray bdd = root.getAsJsonObject().get("bdds").getAsJsonArray(); /* Array content : teachers, rooms, group, course name, course category Mapped in bdd array from index 0 to 4 (5th is useless) */ List<String> mapId = Arrays.asList("teachers", "rooms", "groups", "courseNames", "courseCategories"); for(int i = 0; i < mapId.size(); i++){ // Constant lenght, don't use last bdd array case JsonElement bddElement = bdd.get(i); JsonArray elements = bddElement.getAsJsonObject().get("values").getAsJsonArray(); HashMap<Integer, String> elementsMap = new HashMap<>(); for(JsonElement element: elements){ int elementId = element.getAsJsonObject().get("id").getAsInt(); String elementName = element.getAsJsonObject() .get("name") .getAsString(); elementsMap.put(elementId, elementName); } this.data.put(mapId.get(i), elementsMap); } } public String getData(GroupDataType dataType, int dataId){ Map<Integer, String> dataMap = this.data.get(dataType.getName()); return dataMap.get(dataId); } }